package org.example.proxy4;

import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;

/*
    动态代理创建流程
    1.创建动态代理模版类，实现InvocationHandler接口
    2.覆盖invoke方法
    3.写成员变量 -- zs
    4.完成invoke方法


 */
public class MyInvocationHandler implements InvocationHandler {

    Object target; //zs

    public MyInvocationHandler(Object target){
        this.target = target;
    }

    /*
        这个方法，就是ls的送花方法
        （1）通过成员变量zs，实现核心业务
        （2）对于核心业务的增强

     */

    /**
     *
     * @param proxy -- 代理类对象 这个方法中不用
     * @param method -- zs的核心业务方法
     * @param args -- zs的核心业务方法需要使用的参数
     *
     */
    @Override
    public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {

        /*对象 target
        方法 method
        实参 args*/
        System.out.println("记录日志开始");
        //zs送花 实现核心业务
        //如果没有返回值 o就是null值
        Object o = method.invoke(target,args);
        System.out.println("记录日志结束");

        return o;


    }
}




















